"""
使用说明：
中文大写金额数字前应标明“人民币”字样，大写金额数字应紧接“人民币”字样填写，不得留有空白。
阿拉伯数字小写金额数字中有“0”时，中文大写应按照汉语语言规律、金额数字构成和防止涂改的要求进行书写。
例如：￥206000.75应写成 人民币贰拾万陆仟元零柒角伍分，或写成 人民币贰拾万零陆仟元柒角伍分。
"""
"""
使用说明：
中文大写金额数字到“元”为止的，在“元”之后、应写“整”(或“正”)字；在“角”之后，可以不写“整”(或“正”)字；大写金额数字有“分”的，“分”后面不写“整”(或“正”)字。
"""



def num_trans(num_t):
    num = num_t

    cn_num = "零壹贰叁肆伍陆柒捌玖"
    cn_unit = "分角圆拾佰仟万拾佰仟亿拾佰仟"

    if num < 0:
        print("error: 不支持负数!!")
        return ''
    elif num == 0:
        return '零圆整'

    t = []
    if num == int(num):
        b = '整'
        bi = 1
    else:
        num = int(num*100)
        bi = -1
        b = ''
    bg = False
    while num > 0:
        ct = num%10
        num = int(num / 10)
        bi += 1
        if not bg and ct == 0:
            continue
        elif not bg:
            if (bi > 2 and bi < 6) or (bi == 6) or (bi == 10): b = '圆整'  # 说明是整十以上
            elif bi > 6 and bi < 10: b = '万圆整'  # 说明是整万以上
            elif bi > 10: b = '亿圆整'  # 说明是整亿以上
            bg = True

        if bi > len(cn_unit)-1:
            print('error: 数字太大[{}],转换失败!'.format(num_t))
            return ''

        t.append(cn_unit[bi])
        t.append(cn_num[ct])

    return ''.join(t[::-1])+b


# 测试
print("----------------")
print('小数: ')
test_data = [0.1, 0.11, 0.01, 12342343.22, 12342343.1]# 小数
for i in test_data:
    print('{}:\t{}'.format(i, num_trans(i)))

print("----------------")
print('0: ')
print(num_trans(0))

print("----------------")
print('整数: ')
test_data = [100, 12342343, 1234234300, 123423430000000000, 430000000000, 4300000000] # 整数
for i in test_data:
    print('{}:\t{}'.format(i, num_trans(i)))
